/* eslint-disable prefer-promise-reject-errors */
import { getToken, setToken,removeToken } from '@/utils/cookie-utils'
// import { getUser, getUserAuth } from '@/api/interface'
import { getUser } from '@/api/interface'
// import { emptyRouterMap, constantRouterMap } from '@/router'
import RouterConfig from '@/router/config.js' // 导入路由配置项

const user = {
  // 管理的数据
  state: {
    // 这里放全局参数 使用案例：this.$store.state.user.auth_list
    userInfo:'',
    token:'',
    hasLoadAuthRouter:false,
  },

  mutations: {
    // 这里是set方法 使用案例：this.$store.commit('increment')
    // 设置token
    SET_TOKEN: (state, token) => {
      state.token = token
    },

    // 设置用户信息
    SET_USER_INFO: (state, userInfo) => {
      state.userInfo = JSON.stringify(userInfo)
      state.token = userInfo.mobile
      console.log('userInfo',userInfo)
      setToken(userInfo.mobile)
    },

    // 设置是否已经加载权限
    setLoadAuthRouter : (state, flag) => {
      flag = flag || false;
      state.hasLoadAuthRouter = flag;
    }

  },

  actions: {
    // 设置用户信息
    SetUserInfo ({ commit, state }, userInfo) {
      return new Promise((resolve, reject) => {
        // if (!appId) { // 验证
        //   reject('SetAppId: 没有接收到信息')
        // }
        commit('SET_USER_INFO', userInfo)
        resolve(userInfo)
      })
    },
    
    // 获取用户信息
    GetUserInfo ({ commit, state }) {
      return new Promise((resolve, reject) => {
        getUser().then(res => {
          const data = res.data
          // if (data.roles && data.roles.length > 0) { // 验证返回的roles是否是一个非空数组
          //   // 调用生成路由表
          //   // commit('GenerateRoleRoutes', data.roles).then(() => {
          //   // })
          // } else {
          //   reject('getUser: 角色信息获取错误 !')
          // }
          // 获取其他信息
          commit('SET_APP_ID', data.app_id)
          commit('SET_ORG_ID', data.org_id)
          commit('SET_AVATAR', data.avatar)
          commit('SET_MOBILE', data.mobile)
          commit('SET_NICKNAME', data.nickname)
          commit('SET_USERNAME', data.username)
          commit('SET_UID', data.uid)
          commit('SET_EMAIL', data.email)
          commit('SET_GENDER', data.gender)
          commit('SET_UNREAD_MSG_TOTAL', data.unread_msg_total)

          resolve(res)
        }).catch(error => {
          reject(error)
        })
      })
    },
    /**
     * 获取用户权限
     */
    getPermission ({ dispatch, commit }) {
      return new Promise((resolve, reject) => {
        // getUserAuth().then(res => {
        //   // 存储权限列表
        //   const apiAuthData = res.data
        //   if (!apiAuthData || apiAuthData.length < 1) { // 验证返回的是否是一个空数组
        //     // console.log('getPermission 角色信息获取错误 !')
        //     // reject('getPermission 角色信息获取错误 !')
        //     reject()
        //   }
        //   let apiAuthPermissionList = []
        //   apiAuthData.forEach(apiNode => {
        //     apiAuthPermissionList.push(apiNode[RouterConfig.apiPermissionField])
        //   })
        //   commit('SET_AUTH', apiAuthPermissionList)
        //   commit('SET_ROLES', apiAuthData)
        //   // 调用完权限 ，调用同级的用户信息
        //   dispatch('GetUserInfo').then(res => {
        //     resolve(apiAuthData)
        //   }).catch(() => {
        //     reject()
        //   })
        // }).catch(error => {
        //   reject(error)
        // })
      })
    },

    // 退出
    Logout ({ commit, state }) {
      return new Promise((resolve, reject) => {
        commit('SET_USER_INFO', {})
        commit('SET_TOKEN', '')
        removeToken()
        resolve(true)
      })
    }

  }
}

export default user
